package com.iaz.tech.tools.property;

import java.lang.reflect.Type;

/**
 * Copyright  2025, Hai Yue Xing He Technology Co., Ltd
 *
 * @author        ZHAO LIMIN
 * @version       1.0.1
 * @since         2025-04
 * IPropertyAble  属性Able
 *
 * 用于进行处理， 支持神经元的属性存储，用于记录计算的结果，
 * 计算任务的确认，及任务的结束，任务包为:AZProject 对象
 * 是在计算过程中，存储值，利用byte[] 模式，降低内存的开销
 *
 */
public interface IPropertyAble {

    /* 获得属性路径，用于进行管理对应内存 */
    String path();    
    /**
     * 填充
     * @param path
     * @param key
     * @param _value
     */
    void push(String key, Object _value);
    /**
     * 填充对象Property
     * @param path
     * @param key
     * @param property
     */
    void push(String key, IPropertyAble property);
    /**
     * 填充
     * @param path
     * @param key
     * @param _value
     */
    void push(String path, String key,  Object _value);
    /**
     * 填充对象Property
     * @param path
     * @param key
     * @param property
     */
    void push(String path, String key, IPropertyAble property);
    void push(Object _value);
    void push(IPropertyAble property);
    
    /**
     * 获得数据类型
     * @return
     */
    Type dataType();
}
